package com.dragon.modules.yuegou.service.merchant;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dragon.common.web.PageRequest;
import com.dragon.modules.yuegou.entity.merchant.MerchantSalesEntity;
import com.dragon.modules.yuegou.model.merchant.MerchantSales;
import com.dragon.modules.yuegou.model.merchant.SalesReportModel;
import com.dragon.modules.yuegou.model.merchant.SalesReportQuery;
import com.dragon.modules.yuegou.model.system.Document;
import com.dragon.modules.yuegou.query.merchant.SalesQuery;

import java.math.BigDecimal;

/**
 * 商铺销售额 服务接口
 *
 * @author pbuilder generated
 * @date 2019-07-11 14:42:37
 * @version 2.0
 */
public interface MerchantSalesService extends IService<MerchantSalesEntity> {


    /**
     * 员工版保存销售数据
     * @param merchantSales
     */
    void saveMerchantSales(MerchantSales merchantSales);

    /**
     * 集团版查询销售数据
     * @param page
     * @param query
     * @return
     */
    IPage<MerchantSales> searchMerchantList(PageRequest page, SalesQuery query);

    /**
     * 导出集团版销售数据
     * @param query
     * @return
     */
    Document exportMerchantSales(SalesQuery query);

    /**
     * 导出配置数据
     * @param busdId
     * @return
     */
    Document exportSalesConfig(String busdId);

    /**
     * 下载销售模板
     * @param busdId
     * @return
     */
    Document getSalesTemplate(String busdId);

    /**
     * 下载配置模板
     * @param busdId
     * @return
     */
    Document getConfigTemplate(String busdId);

    /**
     * 导入销售数据
     * @param busdId
     * @param fileId
     */
    void importMerchantSales(String busdId, String fileId);

    /**
     * 导入配置数据
     * @param busdId
     * @param fileId
     */
    void importSalesConfig(String busdId, String fileId);

    /**
     * 修改销售数据
     * @param id
     * @param sales
     * @param volume
     */
    void editSales(String id, BigDecimal sales, Integer volume);

    /**
     * 商圈销售数据-按日
     * @param reportQuery
     * @return
     */
    SalesReportModel getSalesOfDayByBusd(SalesReportQuery reportQuery);

    /**
     * 按商圈获取销售--按业态
     * @param page
     * @param reportQuery
     * @return
     */
    IPage<SalesReportModel> getSalesOfDayByBtType(PageRequest page,  SalesReportQuery reportQuery);

    /**
     * 按商圈获取销售--按商户
     * @param page
     * @param reportQuery
     * @return
     */
    IPage<SalesReportModel> getSalesOfDayByMerchant(PageRequest page, SalesReportQuery reportQuery);

    /**
     * 根据业态ID获取报表
     * @param reportQuery
     * @return
     */
    SalesReportModel getSalesOfDayByBtTypeForDay(SalesReportQuery reportQuery);

    /**
     * 根据商户ID获取报表
     * @param reportQuery
     * @return
     */
    SalesReportModel getSalesOfDayByMerchantForDay(SalesReportQuery reportQuery);



    /**
     * 商圈销售数据-按月
     * @param reportQuery
     * @return
     */
    SalesReportModel getSalesOfMonthByBusd(SalesReportQuery reportQuery);

    /**
     * 按商圈获取销售--按业态
     * @param page
     * @param reportQuery
     * @return
     */
    IPage<SalesReportModel> getSalesOfMonthByBtType(PageRequest page,  SalesReportQuery reportQuery);

    /**
     * 按商圈获取销售--按商户
     * @param page
     * @param reportQuery
     * @return
     */
    IPage<SalesReportModel> getSalesOfMonthByMerchant(PageRequest page, SalesReportQuery reportQuery);
}